Everything about The Year 2038 Problem totally explained
The
year 2038 problem (also known as "Unix Millennium bug", "Y2K38," "Y2K+38," or "Y2.038K" by analogy to the
Y2K problem) may cause some
computer software to fail before or in the year
2038. The problem affects
Unix-like operating systems, which represent
system time as the number of seconds (ignoring
leap seconds) since 00:00:00
January 1,
1970. This representation also affects software written for most other operating systems because of the broad deployment of
C. On most 32-bit systems, the
time_t data type used to store this second count is a
signed 32-bit integer. The latest time that can be represented in this format, following the
POSIX standard, is 03:14:07
UTC on Tuesday,
January 19,
2038. Times beyond this moment will "wrap around" and be represented internally as a negative number, and cause programs to fail, since that'll see these times not as being in 2038 but rather in 1901. Erroneous calculations and decisions may therefore result.
Known problems
In May 2006, reports surfaced of an early Y2038 problem in the
AOLserver software. The software would specify that a database request should "never" time out by specifying a timeout date one billion seconds in the future. One billion seconds (just over 31 years 251 days and 12 hours) after 21:27:28 on
12 May 2006 is beyond the 2038 cutoff date, so after this date, the timeout calculation overflowed and calculated a timeout date that was actually in the past, causing the software to crash.
Solutions
There is no easy fix for this problem for existing
CPU/
OS/
File System combinations. Changing the definition of
time_t to use a 64-bit type would break binary compatibility for software, data storage, and generally anything dealing with the binary representation of time. Changing
time_t to an unsigned 32-bit integer, effectively allowing timestamps to be accurate until the year 2106, would affect many programs that deal with time differences.
Most operating systems for
64-bit architectures already use 64-bit integers in their
time_t. The move to these architectures is already underway and many expect it to be complete before 2038. Using a (signed) 64-bit value introduces a new wraparound date in about 290 billion years. However, as of 2007, hundreds of millions of 32-bit systems are deployed, many in
embedded systems, and it's far from certain that'll all be replaced by 2038.
Despite the modern 18- to 24-month generational update in computer systems technology, embedded computers may operate unchanged for the life of the system they control. The use of 32-bit
time_t has also been encoded into some file formats, which means it can live on for a long time beyond the life of the machines involved.
A variety of alternative proposals have been made, some of which are in use, including storing either
milliseconds or
microseconds since an
epoch (typically either
January 1,
1970 or
January 1,
2000) in a signed-64 bit integer, providing a minimum of 300,000 years range. Other proposals for new time representations provide different precisions, ranges, and sizes (almost always wider than 32 bits), as well as solving other related problems, such as the handling of
leap seconds.
Further Information
Get more info on 'Year 2038 Problem'.
|
External Link Exchanges
Do you know how hard it is to get a link from a large encyclopaedia? Well we're different and will prove it. To get a link from us just add the following HTML to your site on a relevant page:
<a href="http://year_2038_problem.totallyexplained.com">Year 2038 problem Totally Explained</a>
Then simply click through this link from your web page. Our crawlers will verify your link, extract the title of your web page and instantly add a link back to it. If you like you can remove the words Totally Explained and embed the link in article text.
As long as your link remains in place, we'll keep our link to you right here. Please play fair - our crawlers are watching. Your site must be closely related to this one's topic. Any kind of spamming, dubious practises or removing the link will result in your link from us being dropped and, potentially, your whole site being banned. |